Tensorlistgetitem

从张量列表中获取指定索引的张量数据。该算子将输入张量列表中的特定元素复制到输出张量中,支持多种数据类型。

\[\text{output\_tensor} = \text{input\_tensor\_list}[\text{index}]\]

其中 input_tensor_list 是输入的张量列表,index 是要获取的元素索引,output_tensor 是输出张量。

输入:
  • src - 输入张量指针,指向要获取的张量数据。

  • dst - 输出张量指针,用于存储获取的张量数据。

  • data_type - 数据类型对应的字节数,如果为0,表示kTypeUnknown(未知类型)。

  • length - 元素个数,默认dst和src元素个数相等。

  • core_mask - 核掩码(int),仅共享存储版本需要。

输出:
  • dst - 输出张量指针,存储从输入张量列表获取的数据。

支持平台:

FT78NE MT7004

备注

  • 该算子不区分具体的数据类型,数据类型信息通过data_type参数传递

  • 当data_type为0(kTypeUnknown)时,算子会将输出张量的内存清零

  • 当data_type不为0时,算子会按字节复制数据

  • 调用前需要确保dst指向的内存空间足够大(至少length个元素)

共享存储版本:

void tensorlistgetitem_s(void *src, void *dst, int data_type, int length, int core_mask)

C调用示例(共享存储版本):

 1//FT78NE示例
 2#include <stdio.h>
 3#include <tensorlistgetitem.h>
 4
 5int main(int argc, char* argv[]) {
 6    // 假设在DDR空间
 7    float *src = (float *)0xA0000000;  // 输入张量数据
 8    float *dst = (float *)0xB0000000;  // 输出张量数据
 9    int data_type = 4;  // float类型,4字节
10    int length = 10;    // 10个元素
11    int core_mask = 0xff;  // 核掩码
12
13    // 调用共享存储版本的函数
14    tensorlistgetitem_s(src, dst, data_type, length, core_mask);
15
16    return 0;
17}

共享存储版本:

void tensorlistgetitem_p(void *src, void *dst, int data_type, int length)

C调用示例(私有存储版本):

 1#include <stdio.h>
 2#include <tensorlistgetitem.h>
 3
 4int main(int argc, char* argv[]) {
 5    void *src = (void *)0x10000000;
 6    void *dst = (void *)0x10010000;
 7    int data_type = 0;  // kTypeUnknown
 8    int length = 10;    // 10个元素(以字节为单位)
 9
10    // 当data_type为0时,dst将被清零
11    tensorlistgetitem_p(src, dst, data_type, length);
12
13    return 0;
14}